package com.mossle.bpm.behavior.usertask;

import org.activiti.engine.impl.bpmn.behavior.MultiInstanceActivityBehavior;
import org.activiti.engine.impl.bpmn.behavior.UserTaskActivityBehavior;
import org.activiti.engine.impl.pvm.delegate.ActivityExecution;
import org.activiti.engine.impl.task.TaskDefinition;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.jdbc.core.JdbcTemplate;

import com.mossle.bpm.behavior.ProcessEngineBeanFactory;

public class CustomUserTaskActivityBehavior extends UserTaskActivityBehavior {
	private static Logger log = LoggerFactory.getLogger(CustomUserTaskActivityBehavior.class);
	
	private JdbcTemplate jdbcTemplate;//只是一个通过activiti引擎获取spring对象的例子

	public CustomUserTaskActivityBehavior(TaskDefinition taskDefinition) {
		super(taskDefinition);
		jdbcTemplate = ProcessEngineBeanFactory.getBean("jdbcTemplate");
	}
	
	public void setMultiInstanceActivityBehavior(MultiInstanceActivityBehavior multiInstanceActivityBehavior) {
		// TODO Auto-generated method stub
		log.info("MultiInstance usertask  -- {}",multiInstanceActivityBehavior);
		super.setMultiInstanceActivityBehavior(multiInstanceActivityBehavior);
	}
	
	public void execute(ActivityExecution execution) throws Exception {
		log.info("{}:{} begin execute",execution.getCurrentActivityId(),execution.getCurrentActivityName());
		super.execute(execution);
		log.info("{}:{} after execute",execution.getCurrentActivityId(),execution.getCurrentActivityName());
	}
	// 自定义行为可以监控到各个元素的各种行为, 只需要覆盖相应方法即可

}
